#include <iostream>
#include <cstring>
using namespace std;
// #define ONLINE_GUDGE
using PII = pair<int, int>;
#define x first 
#define y second 
const int N = 9, M = N*N, INF = 0x3f3f3f3f;
const int dx[] = {-2,-2,-1,-1, 1, 1, 2, 2};
const int dy[] = {-1, 1,-2, 2,-2, 2,-1, 1};

int n = 8, m = 8;
// char g[N][N];
PII q[M];
int st[N][N]; // 判重 state
char s0[5], s1[5];



void bfs(PII start, PII end)
{
    int hh = 0, tt = 0; // 数组模拟队列
    q[0] = start;
    st[start.x][start.y] = 0;

    // printf("  a b c d e f g h\n");
    // for(int i = 1; i <= n; i++)
    // {
    //     printf("%d ", i);
    //     for(int j = 1;j <= n; j++)
    //     {
    //         cout << ((st[i][j] == INF) ? (char)'X' : (char)(st[i][j] + '0')) << ' ';
    //     }
    //     cout << endl;
    // }
    // cout << "----------------------------" << endl;

    
    while(hh <= tt)
    {
        PII t = q[hh++];
        if(t.x == end.x && t.y == end.y) break;
        for(int k = 0; k < 8; k++)
        {
            int i = t.x + dx[k], j = t.y + dy[k];
            // if(i == t.x && j == t.y)    continue;
            if(i <= 0 || i > n || j <= 0 || j > m || st[i][j] <= st[t.x][t.y] + 1) continue;
            st[i][j] = st[t.x][t.y] + 1;
            q[++tt] = {i,j};
        }
    }
    printf("To get from %s to %s takes %d knight moves.\n", s0, s1, (end.x == start.x && end.y == start.y)? 0 : st[end.x][end.y]);
}

int main()
{

    #ifdef ONLINE_JUDGE

    #else
    freopen("./in.txt","r",stdin);
    #endif
    ios::sync_with_stdio(false);   
	cin.tie(0);

    // scanf("%d%d", &m, &n);

    // for(int i = 0; i < n; i++) scanf("%s", g[i]);

    while(cin >> s0 >> s1)
    {
        // scanf("%s",s1); 
        PII start{s0[1] - '0', s0[0] - 'a' + 1}, end{ s1[1] - '0', s1[0] - 'a' + 1};
        // printf("%s %s\n",s0, s1);
        memset(st, 0x3f, sizeof st);
        //memset(st, 0, sizeof st);

        // printf("----START:(%c,%c) END:(%c,%c)----\n", start.y+'a'-1,start.x+'0', end.y+'a'-1, end.x+'0');
        
        bfs(start, end);
        // printf("  a b c d e f g h\n");
        // for(int i = 1; i <= n; i++)
        // {
        //     printf("%d ", i);
        //     for(int j = 1;j <= n; j++)
        //     {
        //         cout << ((st[i][j] == INF) ? (char)'X' : (char)(st[i][j] + '0')) << ' ';
        //     }
        //     cout << endl;
        // }
        // cout << "----------------------------" << endl;

    }
    

    return 0;
}